<?php

/**
 * @fileoverview
 * 基金收支记录的model。
 */

class Fundlog extends AppModel {

	var $name = 'Fundlog';


	/**
	 * 数据有效性验证规则
	 * 注意这里在定义有效性时，是有顺序问题的，在规则数组中越靠下的越先被执行。
	 * @type Array
	 * @public
	 */
	var $validate = array(
		'occur_date' => array(
			'newerdate'	=> array('rule' => 'validateNewerDate'),
			'date'		=> array('rule' => 'date'),
			'required'	=> VALID_NOT_EMPTY,
		),

		'amount' => array( 
			'numeric'	=> array( 'rule' => 'numeric' ),
			'required'	=> VALID_NOT_EMPTY,
		),

		'description' => array(
			'length'	=> array('rule' => array('maxLength', 255)),
			'required'	=> VALID_NOT_EMPTY,
		),

		'type' => array(
			'typeerror' => array('rule' => array('custom', '/(?:in|out)come/')),
		),
	);


	var $belongsTo = 'User';


	/**
	 * 验证输入的日期不小于数据库中已经存在的任何日期
	 * @param {String} $value 输入的日期值
	 * @type Boolean
	 * @return 验证成功与否
	 */
	function validateNewerDate($value) {

		$maxDate = $this->query("SELECT MAX(occur_date) AS max FROM " . $this->tablePrefix . $this->useTable);

		if ($maxDate[0][0]['max'] && strtotime($value['occur_date']) < strtotime($maxDate[0][0]['max'])) {
			return false;
		} else {
			return true;
		}
	}

	function findLastNDays($days) {

		return $this->findAll("NOW() - INTERVAL $days DAY <= Fundlog.occur_date");
	}


	function findLastLog() {
		return $this->findAll(null, null, "Fundlog.id DESC", 1);
	}
}

?>
